QMessageBox
- QMessageBox : 對話框,可以用來顯示訊息、警告、錯誤提示,或是詢問使用者簡單的回應(例如 是/不是/取消)。
QMessageBox 添加元件
-
QMessageBox.about(self , title , text)
: 顯示一些關於應用程式的訊息,如版本資訊、版權聲明等。這個方法不會提供回應選項,僅有一個確認按鈕。下面範例是點擊按鈕,會跳出對話框。
![about 圖片](https://ithelp.ithome.com.tw/upload/images/20240926/20169254eKdAgbuWai.png)
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox
class MyWindow(QWidget):
def __init__(self):
super().__init__()
btn = QPushButton("按鈕",self)
btn.clicked.connect(self.btnClicked)
def btnClicked(self):
QMessageBox.about(self, "我是標題", "我是內容")
if __name__ == "__main__":
app = QApplication([])
window = MyWindow()
window.show()
app.exec()
-
QMessageBox.information(self , title , text , QMessageBox.button)
: 顯示使用者一些資訊。對話框中可以設置按鈕選項。button 要使用 QMessage.選項
。下面範例是點擊按鈕,會跳出對話框,對話框會有 Yes 和 No 兩個選項。
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox
class MyWindow(QWidget):
def __init__(self):
super().__init__()
btn = QPushButton("按鈕",self)
btn.clicked.connect(self.btnClicked)
def btnClicked(self):
QMessageBox.question(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)
if __name__ == "__main__":
app = QApplication([])
window = MyWindow()
window.show()
app.exec()
-
QMessageBox.critical(self , title , text , QMessageBox.button)
: 錯誤訊息對話框,通常用來提示發生了嚴重錯誤。對話框中會帶有一個錯誤圖示,可以設置按鈕選項。
QMessageBox.critical(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)
-
QMessageBox.question(self , title , text , QMessageBox.button)
: 詢問對話框,通常用來詢問使用者是否確認某個操作,可以設置按鈕選項。
QMessageBox.question(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)
-
QMessageBox.warning(self , title , text , QMessageBox.button)
: 警告訊息對話框,通常用來提示潛在的風險或警告。這個對話框帶有警告圖示,可以設置按鈕選項。
QMessageBox.warning(self, "我是標題", "我是內容", QMessageBox.Yes | QMessageBox.No)
常用的按鈕 (QMessageBox.button) 選項
功能 |
方法 |
確認 |
QMessageBox.Ok |
取消 |
QMessageBox.Cancel |
是 |
QMessageBox.Yes |
否 |
QMessageBox.No |
重試 |
QMessageBox.Retry |
忽略 |
QMessageBox.Ignore |
關閉 |
QMessageBox.Close |
幫助 |
QMessageBox.Help |
套用 |
QMessageBox.Apply |
儲存 |
QMessageBox.Save |
重設 |
QMessageBox.Reset |
另一種添加 QMessageBox 方式
除了使用上面的方法,也可以一個一個屬性設定。
-
setWindowTitle(str)
: 設定對話框的標題。
-
setText(str)
: 設置對話框的內容文字。
-
setIcon(QMessageBox.Icon)
: 設置對話框的 Icon 圖案。
-
setStandardButtons(QMessageBox.button)
: 設置對話框的按鈕選項 。
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox
class MyWindow(QWidget):
def __init__(self):
super().__init__()
btn = QPushButton("按鈕",self)
btn.clicked.connect(self.btnClicked)
def btnClicked(self):
msg = QMessageBox(self)
msg.setWindowTitle("對話框") #設定文字
msg.setText("我是訊息") #設定顯示訊息
msg.setIcon(QMessageBox.Warning)
msg.setStandardButtons(QMessageBox.Ok|QMessageBox.No)
msg.exec() #顯示訊息框
if __name__ == "__main__":
app = QApplication([])
window = MyWindow()
window.show()
app.exec()
QMessageBox 使用
當按下按鈕後,程式會顯示一個 QMessageBox 訊息對話框,並將使用者的回應儲存在 respond 變數中。如果使用者點擊了 Ok 按鈕,程式會列印出「你點擊了Ok」;如果使用者點擊了 No 按鈕,程式則會列印出「你點擊了No」。
from PySide6.QtWidgets import QMainWindow , QApplication, QWidget, QPushButton, QVBoxLayout, QMessageBox
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.resize(250, 250)
btn = QPushButton("按鈕")
btn.clicked.connect(self.btnClicked)
mainLayout = QVBoxLayout()
mainLayout.addWidget(btn)
self.setLayout(mainLayout)
def btnClicked(self):
respond = QMessageBox.information(self, "我是標題", "我是內容", QMessageBox.Ok | QMessageBox.No )
if respond == QMessageBox.Ok:
print("你點擊了Ok")
elif respond == QMessageBox.No:
print("你點擊了No")
if __name__ == "__main__":
app = QApplication([])
window = MyWindow()
window.show()
app.exec()
總結
方法 |
功能 |
訊息對話框 |
QMessageBox.about(self , title , text) |
資訊對話框 |
QMessageBox.information(self , title , text , QMessageBox.button) |
錯誤對話框 |
QMessageBox.critical(self , title , text , QMessageBox.button) |
詢問對話框 |
QMessageBox.question(self , title , text , QMessageBox.button) |
警告對話框 |
QMessageBox.warning(self , title , text , QMessageBox.button) |
- 常用的按鈕 (QMessageBox.button) 選項
功能 |
方法 |
確認 |
QMessageBox.Ok |
取消 |
QMessageBox.Cancel |
是 |
QMessageBox.Yes |
否 |
QMessageBox.No |
重試 |
QMessageBox.Retry |
忽略 |
QMessageBox.Ignore |
關閉 |
QMessageBox.Close |
幫助 |
QMessageBox.Help |
套用 |
QMessageBox.Apply |
儲存 |
QMessageBox.Save |
重設 |
QMessageBox.Reset |
功能 |
方法 |
設定對話框標題 |
setWindowTitle(str) |
設定文字內容 |
setText(str) |
設定Icon |
setIcon(QMessageBox.Icon) |
設定按鈕 |
setStandardButtons(QMessageBox.button) |
- QMessageBox使用 : 給一個變數接收 QMessageBox 的回應訊息,然後再去做判斷按了哪個按鈕,在做出動作。